package com.ruoyi.market.mapper;

import com.ruoyi.market.domain.VerCoupon;
import com.ruoyi.market.domain.dto.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 优惠券Mapper接口
 *
 * @author ruoyi
 * @date 2025-09-02
 */
@Mapper
public interface VerCouponMapper {
    /**
     * 查询优惠券
     *
     * @param id 优惠券主键
     * @return 优惠券
     */
    public VerCoupon selectVerCouponById(Long id);

    /**
     * 查询优惠券列表
     *
     * @param verCoupon 优惠券
     * @return 优惠券集合
     */
    public List<VerCoupon> selectVerCouponList(VerCoupon verCoupon);

    /**
     * 新增优惠券
     *
     * @param verCoupon 优惠券
     * @return 结果
     */
    public int insertVerCoupon(VerCoupon verCoupon);

    /**
     * 修改优惠券
     *
     * @param verCoupon 优惠券
     * @return 结果
     */
    public int updateVerCoupon(VerCoupon verCoupon);

    /**
     * 删除优惠券
     *
     * @param id 优惠券主键
     * @return 结果
     */
    public int deleteVerCouponById(Long id);

    /**
     * 批量删除优惠券
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVerCouponByIds(Long[] ids);

    /**
     * 获取优惠券组商品列表
     */
    List<CouponGroupDto> couponGroupList(CouponGroupDto couponGroupDto);

    List<userCouponDto> userCouponList(Long userId);

    List<VerUserCouponDto> getuserCouponDetail(Long userId);

    List<SkuCouponsDto> getCouponSaleTop8(Long couponId);

    List<SkuCouponsCategoryDto> getCouponCategoryList(Long couponId);

    List<SkuCouponsCategoryDto> getCouponCategoryListPage(SkuCouponsCategoryRequestDto request);

    List<CouponGroupFlatDto> getAllCoupons();

    /**
     * 获取所有优惠券销量最高的前8个商品
     */
    List<SkuCouponsDto> getAllCouponsSaleTop8();

    /**
     * 获取所有优惠券组分类商品列表
     */
    List<SkuCouponsCategoriesDto> getAllCouponGroupCategorySkus();

    /**
     * 根据优惠券组id获取不同页数的商品记录
     */
    List<SkuCouponsCategoryDto> getCouponGroupPage(CouponGroupPageRequestDto request);

}
